package JavaSE.CODE.javaCollection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class ListDemo {
    public static void main(String[] args) {
        //创建集合
        List list = new ArrayList<>();
//      一、添加元素
        list.add("a");
        list.add("b");
        list.add(0,"c");
        System.out.println(list.size());
        System.out.println(list.toString());
//      二、删除元素
        list.remove("a");
//      list.remove(0);
        System.out.println(list.toString());
//      三、遍历元素
//        1、普通for
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
            //注意：get方法返回的是Object，要用子类型就要强制转换
        }
//        2、增强for
        for (Object o : list) {
            System.out.println(o);
        }
//        3、迭代器
        Iterator iterator = list.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
//        普通iterator的功能仍是只有三个
//        ListIterator和普通iterator的区别是，前者还可以向前遍历，添加、删除、修改元素
//        4、列表迭代器
        ListIterator listIterator = list.listIterator();
//        从前向后遍历
        while(listIterator.hasNext()){
            System.out.println(listIterator.nextIndex() + ":" + listIterator.next());
        }
//        指针已经移动到末尾了，否则还需要移动指针
//        从后向前遍历
        while(listIterator.hasPrevious()){
            System.out.println(listIterator.previousIndex() + ":" + listIterator.previous());
        }
//      四、获取元素 根据对象返回位置
        System.out.println(list.indexOf("b"));




    }
}
